// import Vue from 'vue/dist/vue'
import Vue from 'vue'
import App from './App.vue'

Vue.config.productionTip = false // 关闭开发模式下的控制台提示信息

const Hello = {
    name: 'Hello',
    data() {
        return {
            msg: '我是hello组件'
        }
    },
    template: `
        <div>
            <p>msg: {{msg}}</p>
        </div>
    `
}

let obj = {
    // install执行时机：Vue.use(obj)  install会执行，并且收到Vue作为参数
    install(Vue) {
        console.log('obj install a: ', Vue)
        // 1. 注册全局组件 Hello
        Vue.component('Hello', Hello)
        // 2. 注册全局过滤器
        Vue.filter('qie', (value, num = 4) => {
            console.log('filter this : ', this)
            return value.slice(0, num)
        })
        // 3. 注册全局指令
        Vue.directive('myText', (element, { value }) => {
            element.innerHTML = value
            element.style.fontSize = '20px'
        })
        Vue.directive('myShow', (element, { value }) => {
            if (!value) {
                element.style.display = 'none';
            }
        })
        // 4. 给Vue.prototype挂载属性和方法
        Vue.prototype.aaa = '9999'
        Vue.prototype.say = function(){
            console.log('say method')
        }
        // 5. 绑定eventBus
        Vue.prototype.$bus = new Vue()
    }
}
Vue.use(obj) // 就会触发obj对象中的 install函数的执行

new Vue({
    render: h => h(App),
}).$mount('#app')




